package com.zhang.ssmschoolshop.controller.admin;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhang.ssmschoolshop.entity.User;
import com.zhang.ssmschoolshop.entity.UserExample;
import com.zhang.ssmschoolshop.service.UserService;
import com.zhang.ssmschoolshop.util.Msg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 用户管理控制器类
 * 提供用户的增、删、查等管理功能
 */
@Controller
@RequestMapping("/admin/user")
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }


    /**
     * 获取所有用户（分页）
     * @param pn 当前页码
     * @param response HTTP 响应对象
     * @param model 模型，用于传递数据到视图
     * @return 返回查询结果和分页信息的 Msg 对象
     */
    @RequestMapping("/showjson")
    @ResponseBody
    public Msg getAllUsers(@RequestParam(value = "page", defaultValue = "1") Integer pn, 
                           HttpServletResponse response, Model model) {
        // 启动分页插件，设置当前页和每页显示条数
        PageHelper.startPage(pn, 10);

        // 查询所有用户
        List<User> userList = userService.selectByExample(new UserExample());

        // 包装分页信息
        PageInfo<User> pageInfo = new PageInfo<>(userList, 5);

        // 返回分页信息和查询结果
        return Msg.success("查询成功").add("pageInfo", pageInfo);
    }


    /**
     * 跳转到用户管理页面
     * @return 用户管理页面的视图名称
     */
    @RequestMapping("/show")
    public String userManage() {
        return "userManage";  // 返回用户管理页面的视图
    }

    /**
     * 删除指定用户
     * @param userid 用户ID
     * @return 删除成功的消息
     */
    @RequestMapping(value = "/delete/{userid}", method = RequestMethod.DELETE)
    @ResponseBody
    public Msg deleteUser(@PathVariable("userid") Integer userid) {
        userService.deleteUserById(userid);
        return Msg.success("删除成功");
    }
}
